package com.aizuda.boot.modules.business.negotiation.entity.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

@Data
@Schema(description = "合同版本历史响应DTO")
public class ContractVersionHistoryRespDTO {
    
    @Schema(description = "版本号，如V1.0")
    private String version;
    
    @Schema(description = "操作人信息")
    private OperatorInfoDTO operator;
    
    @Schema(description = "创建时间")
    private String createTime;
    
    @Schema(description = "文件信息")
    private FileInfoDTO fileInfo;
    
    @Schema(description = "确认人员列表")
    private List<OperatorInfoDTO> confirmedUsers;
    
    @Schema(description = "状态：最终稿、版本终稿")
    private String status;
    
    @Schema(description = "处理过程列表")
    private List<ProcessItemDTO> process;
    
    @Data
    @Schema(description = "操作人信息")
    public static class OperatorInfoDTO {
        @Schema(description = "用户ID")
        private Long id;
        
        @Schema(description = "用户姓名")
        private String name;
        
        @Schema(description = "用户头像")
        private String avatar;
    }
    
    @Data
    @Schema(description = "文件信息")
    public static class FileInfoDTO {
        @Schema(description = "文件ID")
        private String fileId;
        
        @Schema(description = "文件名")
        private String fileName;
        
        @Schema(description = "文件类型")
        private String fileType;
        
        @Schema(description = "创建时间")
        private String createTime;
        
        @Schema(description = "文件Key")
        private String fileKey;
        
        @Schema(description = "文件版本号")
        private Integer fileVersion;
    }
    
    @Data
    @Schema(description = "处理过程项")
    public static class ProcessItemDTO {
        @Schema(description = "状态：初始稿、确认稿")
        private String status;
        
        @Schema(description = "操作人信息")
        private OperatorInfoDTO operator;
        
        @Schema(description = "创建时间")
        private String createTime;
        
        @Schema(description = "文件信息")
        private FileInfoDTO fileInfo;
    }
} 